home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / admin / linuxcon.000 / linuxcon / linuxconf-1.6 / dialog / fldnum.c < prev    next >
C/C++ Source or Header  |  1996-07-22  |  1KB  |  80 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <ctype.h>
  4. #include "dialog.h"
  5.  
  6. class FIELD_INTEGER: public FIELD_STRING_BASE{
  7.     int &val;
  8.     int backup;
  9.     /*~PROTOBEG~ FIELD_INTEGER */
  10. public:
  11.     FIELD_INTEGER (const char *_prompt, int &_val);
  12. protected:
  13.     void dokey (WINDOW *w,
  14.          int key,
  15.          FIELD_MSG&msg);
  16. public:
  17.     void html_draw (int nof);
  18.     void restore (void);
  19.     void save (void);
  20.     /*~PROTOEND~ FIELD_INTEGER */
  21. };
  22.  
  23. PUBLIC FIELD_INTEGER::FIELD_INTEGER(
  24.     const char *_prompt,
  25.     int &_val)
  26.     : FIELD_STRING_BASE (_prompt, 10),val(_val)
  27. {
  28.     backup = _val;
  29.     sprintf (buf,"%d",backup);
  30. }
  31.  
  32. PROTECTED  void FIELD_INTEGER::dokey(WINDOW *w, int key, FIELD_MSG &msg)
  33. {
  34.     if (isdigit(key)
  35.         || (key >= KEY_MIN && key <= KEY_MAX)
  36.         || key < ' '
  37.         || (x.input + x.scroll == 0 && key == '-')){
  38.         FIELD_STRING_BASE::dokey(w,key,msg);
  39.     }
  40. }
  41.     
  42. /*
  43.     Draw the field with the prompt
  44. */
  45. PUBLIC void FIELD_INTEGER::html_draw(int nof)
  46. {
  47.     char key[100];
  48.     format_htmlkey (key,nof);
  49.     html_printf ("<tr><td>%s<td>",prompt);
  50.     html_defvar ("integer",key,buf,"size=10 maxlength=20");
  51.     html_defvarcur (key,buf);
  52. }
  53.  
  54.  
  55.  
  56. PUBLIC void FIELD_INTEGER::save()
  57. {
  58.     val = atoi(buf);
  59. }
  60.  
  61. PUBLIC void FIELD_INTEGER::restore()
  62. {
  63.     val = backup;
  64. }
  65.  
  66.  
  67.  
  68. /*
  69.     Add a numerical field to the dialog.
  70. */
  71. PUBLIC FIELD *DIALOG::newf_num(
  72.     const char *prompt,
  73.     int &val)
  74. {
  75.     FIELD_INTEGER *s = new FIELD_INTEGER(prompt,val);
  76.     add (s);
  77.     return s;
  78. }
  79.  
  80.